//
// Created by 紫霄 on 2020/4/18.
//

#ifndef LEETCODE_27_H
#define LEETCODE_27_H
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 * 请完成一个函数，输入一个二叉树，该函数输出它的镜像。

例如输入：

     4
   /   \
  2     7
 / \   / \
1   3 6   9
镜像输出：

     4
   /   \
  7     2
 / \   / \
9   6 3   1
 */

struct TreeNode {
  int val;
  TreeNode *left;
  TreeNode *right;
  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
class Solution {
public:
  TreeNode *mirrorTree(TreeNode *root) {
    if (root) {
      TreeNode *cur;
      cur = root->left;
      root->left = root->right;
      root->right = cur;
      mirrorTree(root->right);
      mirrorTree(root->left);
    }
    return root;
  }
};
#endif // LEETCODE_27_H
